package com.qabaco.odondata.model.servicio;

import com.qabaco.odondata.model.entities.Usuario;

import com.qabaco.odondata.model.util.Constantes;

import java.util.Date;

public class ServicioThreads {
    public ServicioThreads() {
        super();
    }
    
    
    
    public String enviarMailNotificarConsulta(ServicioDB servicioDB, ServicioMail servicioMail, Integer idUsuarioConsulta, Boolean esRespuesta, String asunto, String mensaje ){
        
        
        new HiloEnviarMailNotificarConsulta(new Date().toString(), servicioDB, servicioMail, idUsuarioConsulta, esRespuesta, asunto, mensaje).start();                      
        
        
        return null;    
    }
    
    
    
    
    
    
    
    
  class HiloEnviarMailNotificarConsulta extends Thread {    
      private ServicioDB servicioDB;
      private ServicioMail servicioMail;
      private Integer idUsuarioConsulta;
      private Boolean esRespuesta; 
      private String asunto;
      private String mensaje;
     
      public HiloEnviarMailNotificarConsulta(String str, ServicioDB servicioDB, ServicioMail servicioMail, Integer idUsuarioConsulta, Boolean esRespuesta, String asunto, String mensaje ) {
          super(str);
          this.servicioDB = servicioDB;
          this.servicioMail = servicioMail;
          this.idUsuarioConsulta = idUsuarioConsulta;
          this.esRespuesta = esRespuesta;
          this.asunto = asunto;
          this.mensaje = mensaje;
        
      }
     
      public void run() {           
          try {
              Usuario destinatario = null;
              if (esRespuesta)
                  destinatario = (Usuario)servicioDB.find(Usuario.class, idUsuarioConsulta);
              else // Es una pregunta, debe ir al admin
                  destinatario = (Usuario)servicioDB.find(Usuario.class, Constantes.ADMIN_ID_USUARIO); //
              servicioMail.enviarMail(null, destinatario.getMail(), asunto, mensaje);
          }
          catch (Exception e){
              e.printStackTrace();               
          }          
      }
  }
}
